共计 1146 个字符,预计需要花费 3 分钟才能阅读完成。
import java.util.ArrayList;import java.util.Scanner;/*** 喊7是一个传统的聚会游戏,N个人围成一圈,按顺时针从1到N编号。* 编号为1的人从1开始喊数,下一个人喊的数字为上一个人的数字加1,但是当将要喊出来的数字是7的倍数或者数字本身含有7的话,不能把这个数字直接喊出来,而是要喊"过"。* 假定玩这个游戏的N个人都没有失误地在正确的时机喊了"过",当喊到数字K时,可以统计每个人喊"过"的次数。* 现给定一个长度为N的数组,存储了打乱顺序的每个人喊"过"的次数,请把它还原成正确的顺序,即数组的第i个元素存储编号i的人喊"过"的次数。*/public class Python_M_N_T_7 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String line = scanner.nextLine();String[] strings = line.split(" ");int count = 0; // 计数周期内总的喊“过”次数for (String s : strings) {count += Integer.parseInt(s);}int[] corrects = new int[strings.length]; // 存放正确的次数int number = 1; // 从数字1开始叫while (count > 0) {for (int i = 0; i < corrects.length; i++) {if ((number + "").contains("7") || number % 7 == 0) {// 数字包含7或者能被7整除,就喊“过”,计一次corrects[i]++;count--;}if (count == 0) {// 如果所有的“过”均已出现,就暂停break;}number++; // 数字递增}}StringBuilder sb = new StringBuilder();for (int correct : corrects) {sb.append(correct).append(" ");}System.out.println(sb.toString().trim());// 输出K可能的情况 StartArrayList<Integer> integers = new ArrayList<>();integers.add(number);while (true) {number++;if ((number + "").contains("7") || number % 7 == 0) break;integers.add(number);}System.out.println("K可能出现的数字:" + integers);// 输出K可能的情况 End}}
正文完

